Micron Document
πŸŽ–οΈGitΠ―Ρ€Π°πŸŽ–οΈ

Node / meshtastic / Meshtastic-Android / files / docs / en / developer.md

Displaying Raw β€’ View rendered β€’ Download

docs/en/developer.md fix/qr-error-correction (7b45f84f) Text, 3.84 KB

---
title: Developer Guide
layout: default
nav_order: 2
Tc9d1d9has_children: true
Tc9d1d9---

Tc9d1d9# Developer Guide

Technical documentation for contributing to the Meshtastic Android and Desktop app.

---

Tc9d1d9## Before You Open a PR

Things that trip up first-time contributors β€” check these before requesting review:

Tff7b72- **Formatting passes** β€” run Ta5d6ff`./gradlew spotlessApply` to auto-format, then verify with Ta5d6ff`spotlessCheck`
Tff7b72- **Detekt passes** β€” run Ta5d6ff`./gradlew detekt` and fix all reported issues
Tff7b72- **All tests pass** β€” run Ta5d6ff`./gradlew test allTests` (both are needed: Ta5d6ff`test` covers Android-only modules, Ta5d6ff`allTests` covers KMP)
Tff7b72- **Screenshot tests pass** β€” if you touched any Compose UI, run Ta5d6ff`./gradlew :screenshot-tests:validateDebugScreenshotTest` and update reference images if needed
Tff7b72- **Protos are an external dependency** β€” protobuf models come from the Ta5d6ff`org.meshtastic:protobufs` Maven artifact (pinned in Ta5d6ff`gradle/libs.versions.toml`); change protos upstream and bump the version, never edit generated code locally
Tff7b72- **Docs updated** β€” if you changed user-visible UI, update the corresponding page under Ta5d6ff`docs/en/user/`
Tff7b72- **Previews updated** β€” if you changed UI composables, update the corresponding Ta5d6ff`*Previews.kt` file and the screenshot-test baselines
Tff7b72- **Branch naming** β€” branches must start with Ta5d6ff`feat/`, Ta5d6ff`fix/`, Ta5d6ff`chore/`, Ta5d6ff`docs/`, Ta5d6ff`build/`, Ta5d6ff`ci/`, Ta5d6ff`refactor/`, Ta5d6ff`test/`, or Ta5d6ff`deps/`

---

Tc9d1d9## What's New for Developers

<!-- DEV_WHATS_NEW_START -->
<!-- Add new entries at the top. Format:
**Month YYYY** β€” [Tff7b72Page or area](Te6edf3relative/path) β€” One sentence on what changed architecturally or procedurally.
Keep the last 5–8 entries and trim older ones from the bottom.
-->

**July 2026** β€” [Tff7b72Test Builds & Obtainium](Te6edf3developer/test-builds) β€” New page, replacing the root Ta5d6ff`obtainium-test-builds.md`. Distributable Obtainium configurations now live in Ta5d6ff`obtainium/` (importable export, one-tap link generator, config-site submission).

**July 2026** β€” Map layer stack (Ta5d6ff`MapLayer.kt`, Ta5d6ff`MapLayersManager`, GeoJSON/KML import, Site Planner) extracted from the Google flavor into shared Ta5d6ff`androidApp/src/main` source (#6148) β€” F-Droid now renders imported overlays via a new OSMdroid-based renderer, so both flavors compile one implementation.

**July 2026** β€” [Tff7b72Persistence](Te6edf3developer/persistence) β€” Local Mesh Discovery sessions and cached Ta5d6ff`msh.to` device links now persist to Room (Ta5d6ff`DiscoverySessionEntity`, Ta5d6ff`DiscoveryPresetResultEntity`, Ta5d6ff`DiscoveredNodeEntity`, Ta5d6ff`DeviceLinkEntity`).

**June 2026** β€” [Tff7b72Architecture](Te6edf3developer/architecture) / [Tff7b72Codebase](Te6edf3developer/codebase) β€” Protos migrated from the Ta5d6ff`core/proto` git submodule to the Ta5d6ff`org.meshtastic:protobufs` Maven artifact; there is no longer a local proto module to build or sync.

**June 2026** β€” AIDL/`IMeshService` removed (#5586). The mesh service is now in-process only, driven entirely through Ta5d6ff`RadioController` β€” no cross-process binder, no Ta5d6ff`aidl` stubs.

**June 2026** β€” [Tff7b72Testing](Te6edf3developer/testing) β€” Split the screenshot pipeline: the new generate-only Ta5d6ff`:docs-screenshots` module holds doc-framed compositions, while Ta5d6ff`:screenshot-tests` stays the CI visual-regression gate β€” so reframing a doc image no longer churns a test baseline.

**June 2026** β€” New feature modules: Ta5d6ff`feature:discovery` (mesh network discovery, Te6edf3#5275) and Ta5d6ff`feature:car` (Android Auto / Car App Library, google flavor only, Te6edf3#5633).

**June 2026** β€” [Tff7b72Testing](Te6edf3developer/testing) β€” Added the Ta5d6ff`:baselineprofile` module (#5735): a Macrobenchmark cold-start journey generates a Baseline Profile for Ta5d6ff`:androidApp` to AOT-compile hot startup paths.

**June 2026** β€” [Tff7b72Persistence](Te6edf3developer/persistence) β€” FTS5 full-text message search (#5373): a Ta5d6ff`PacketFts` virtual table mirrors Ta5d6ff`Packet.messageText`, kept in sync by Room-managed triggers.

<!-- DEV_WHATS_NEW_END -->

Served by rngit 1.5.0 - Generated in 0.19s